@Aspect(
	instantiationModel=AspectInstantiationModel.PERTARGET,
	perClausePattern="aPointcutDefinition()",
	isPrivileged=true )
@DeclarePrecedence( "Authentication*,Trace" )
public class GlobalOrder {
	@DeclareWarning( "execution(* Remote+.*(..)) && within(bank.ejb.*)" )
	final static String message = "Remote may interfere with EJBs in bank.ejb";
  
	@Pointcut("call(* Bank.*(..))")
	void pc1(){}

	@Before("pc1()")
	public void beforePc1(JoinPoint jp){ ... }

	@Before("pc1() && this(src) && target(dst)")
	public void beforePc1(Object src, Object dst){ ... }

	@Around("pc1()")
	public Object aroundPc1(ProceedingJoinPoint jp){
		//instrukcje
		Object r = jp.proceed();
		//instrukcje
		return r;
	}

	@AfterReturning(value="pc1()", returning="r")
	public void afterRet(Object r){ ... }

	@AfterThrowing(value="pc1()", throwing="t")
	public void afterTh(Object t){ ... } 
}